code: protected synchronized HierarchicalType getDataType(String type) {
          HierarchicalType dataType = typeInstances.get(type);
          //todo: are there still cases where type can be null?
          if (dataType == null) {
              dataType = createDataType(type);
              typeInstances.put(type, dataType);
          }
          return dataType;
      }
docs: todo: abstract this via AtlasTypeSystem