}
public CollectionData serializeCollection(final ObjectAdapter collectionAdapter, final int graphDepth, final KnownObjectsRequest knownObjects) {
final Oid oid = collectionAdapter.getOid();
final String collectionType = collectionAdapter.getSpecification().getFullIdentifier();
final TypeOfFacet typeOfFacet = collectionAdapter.getSpecification().getFacet(TypeOfFacet.class);
if (typeOfFacet == null) {
throw new IsisException("No type of facet for collection " + collectionAdapter);
}
final String elementType = typeOfFacet.value().getName();
final boolean hasAllElements = collectionAdapter.isTransient() || collectionAdapter.getResolveState().isResolved();
ReferenceData[] elements;
if (hasAllElements) {
final CollectionFacet collectionFacet = CollectionFacetUtils.getCollectionFacetFromSpec(collectionAdapter);