@Override
  public List<File> fromString(@Nullable @NonNls String s, @NotNull ConvertContext context) {
    final GenericAttributeValue attribValue = context.getInvocationElement().getParentOfType(GenericAttributeValue.class, false);
    if (attribValue == null) {
      return null;
    }
    final String path = attribValue.getStringValue();
    if (path == null) {
      return null;
    }
    final List<File> result = new ArrayList<>();
    Computable<String> basedirComputable = null;
    final PathTokenizer pathTokenizer = new PathTokenizer(path);
    while (pathTokenizer.hasMoreTokens()) {
      File file = new File(pathTokenizer.nextToken());
      if (!file.isAbsolute()) {
        if (basedirComputable == null) {
          basedirComputable = new Computable<>() {
            final String myBaseDir;

            {
              final AntDomProject antProject = getEffectiveAntProject(attribValue);
              myBaseDir = antProject != null ? antProject.getProjectBasedirPath() : null;
            }

            @Override
            public String compute() {
              return myBaseDir;
            }
          };
        }
        final String baseDir = basedirComputable.compute();
        if (baseDir == null) {
          continue;
        }
        file = new File(baseDir, path);
      }
      result.add(file);
    }
    return result;
  }
@Override
  public List<File> fromString(@Nullable @NonNls String s, @NotNull ConvertContext context)