in shared/src/main/scala/org/jetbrains/sbt/structure/XmlSerializer.scala [24:35]
def deserialize[T](implicit serializer: XmlSerializer[T]): Seq[T] =
nodeSeq.flatMap(_.deserialize[T].fold(_ => None, x => Some(x)))
def deserializeOne[T](implicit serializer: XmlSerializer[T], manifest: ClassTag[T]): Either[Throwable,T] = {
val ts = nodeSeq.map(_.deserialize[T]).collect { case Right(t) => t }
if (ts.isEmpty)
Left(new Error("None of " + manifest.runtimeClass.getSimpleName + " is found in " + nodeSeq))
else if (ts.length > 1)
Left(new Error("Multiple instances of " + manifest.runtimeClass.getSimpleName + " are found in " + nodeSeq))
else
Right(ts.head)
}