public static BuildingModel parseBuilding(OsmPrimitive primitive, Perspective perspective) { if (primitive instanceof Way) { return BuildingParser.parseBuildingWay((Way) primitive, perspective); } else if (primitive instanceof Node) { return BuildingParser.parseBuildingNode((Node) primitive, perspective); } else if (primitive instanceof Relation) { Relation relation = (Relation) primitive; if (relation.isMultipolygon()) { // simple building from multipolygon return BuildingParser.parseBuildingMultiPolygon(relation, perspective); } else { // complex building return BuildingParser.parseBuildingRelation(relation, perspective); } } throw new IllegalArgumentException("unknown type of building"); }