core/src/main/java/com/orientechnologies/orient/core/serialization/serializer/record/binary/ORecordSerializerBinaryV0.java
private List<RecordInfo> getPositionsFromEmbeddedCollection(final BytesContainer bytes, int serializerVersion) {
    List<RecordInfo> retList = new ArrayList<>();

    int numberOfElements = OVarIntSerializer.readAsInteger(bytes);
    //read collection type
    readByte(bytes);

    for (int i = 0; i < numberOfElements; i++) {
      //read element

      //read data type      
      OType dataType = readOType(bytes, false);
      int fieldStart = bytes.offset;      

      RecordInfo fieldInfo = new RecordInfo();
      fieldInfo.fieldStartOffset = fieldStart;
      fieldInfo.fieldType = dataType;

      //TODO find better way to skip data bytes;
      deserializeValue(bytes, dataType, null, true, -1, serializerVersion, true);
      fieldInfo.fieldLength = bytes.offset - fieldStart;
      retList.add(fieldInfo);
    }

    return retList;
  }
private List<RecordInfo> getPositionsFromEmbeddedCollection(final BytesContainer bytes, int serializerVersion) {
    List<RecordInfo> retList = new ArrayList<>();

    int numberOfElements = OVarIntSerializer.readAsInteger(bytes);
    //read collection type
    readByte(bytes);

    for (int i = 0; i < numberOfElements; i++) {
      //read element

      //read data type      
      OType dataType = readOType(bytes, false);
      int fieldStart = bytes.offset;      

      RecordInfo fieldInfo = new RecordInfo();
      fieldInfo.fieldStartOffset = fieldStart;
      fieldInfo.fieldType = dataType;

      //TODO find better way to skip data bytes;
      deserializeValue(bytes, dataType, null, true, -1, serializerVersion, true);
      fieldInfo.fieldLength = bytes.offset - fieldStart;
      retList.add(fieldInfo);
    }

    return retList;
  }
returns begin position and length for each value in embedded collection