code: static Property parse(final String propertyLine) throws IOException {
          if (!propertyLine.startsWith("property ")) {
              throw new IOException("not a property: '"
                      + propertyLine + "'");
          }
          String definition = propertyLine.substring("property ".length());
  
          if (definition.startsWith("list")) {
              return ListProperty.parse(propertyLine);
          }
  
          String[] parts = definition.split(" +", 2);
          if (parts.length != 2) {
              throw new IOException("Expected two parts in property definition: '"
                      + propertyLine + "'");
          }
          String type = parts[0];
          String name = parts[1];
  
          DataType dataType;
          try {
              dataType = DataType.parse(type);
          }
          catch (IllegalArgumentException e) {
              throw new IOException(e.getMessage());
          }
  
          return new Property(name, dataType);
      }
docs: Parses a property header line.
  @param propertyLine Header line.
  @return Property described on the line.
  @throws IOException if the header line as an invalid format.