docs: @SuppressWarnings("unchecked")
      @Override
      public ConfigAccessor<List<T>> build() {
          ConfigAccessor<List<T>> accessor;
          synchronized (this) {
              List<String> propertyNames = generatePropertyNameList(getPropertyName(), getSuffixValues());
              Duration cacheForDuration = getCacheFor();
              boolean evaluateVariables = getEvaluateVariables();
              Object defaultValue = getDefaultValue();
              String defaultString = getDefaultString();
              Class<T> genericSubType = getGenericSubType();
  
              //notice that these next couple of lines do not have generics on ... it does work but is not pretty
              @SuppressWarnings("rawtypes")
              Converter converter = getConverter();
              @SuppressWarnings("rawtypes")
              ConfigAccessor rawAccessor = new ConfigAccessorImpl<List>(getConfig(), propertyNames, List.class, genericSubType, cacheForDuration, evaluateVariables, defaultValue, defaultString, converter);
              //and this is an unchecked conversion
              accessor = rawAccessor;
          }
          return accessor;
      }