public Map<String, FileDescriptor> parse(FileDescriptorSource fileDescriptorSource) throws DescriptorParserException {
Map<String, char[]> input = fileDescriptorSource.getFileDescriptors();
Map<String, FileDescriptor> fileDescriptorMap = new LinkedHashMap<>(input.size());
for (Map.Entry<String, char[]> entry : input.entrySet()) {
try {
ProtoFile protoFile = ProtoSchemaParser.parse(entry.getKey(), new CharArrayReader(entry.getValue()));
FileDescriptor fileDescriptor = PROTOFILE_MAPPER.map(protoFile);
fileDescriptorMap.put(entry.getKey(), fileDescriptor);
} catch (IOException e) {
throw new DescriptorParserException("Internal parsing error : " + e.getMessage());
} catch (DescriptorParserException e) {