    public ImportStatementInfo resolve(final TargetClassInfo usingClass,
            final CallableUnitInfo usingMethod, final ClassInfoManager classInfoManager,
            final FieldInfoManager fieldInfoManager, final MethodInfoManager methodInfoManager) {
        MetricsToolSecurityManager.getInstance().checkAccess();
        if (null == classInfoManager) {
            throw new NullPointerException();
        }
        if (this.alreadyResolved()) {
            return this.getResolved();
        }
        final int fromLine = this.getFromLine();
        final int fromColumn = this.getFromColumn();
        final int toLine = this.getToLine();
        final int toColumn = this.getToColumn();
        final SortedSet<ClassInfo> accessibleClasses = new TreeSet<ClassInfo>();
        if (this.isAllClasses()) {
            final String[] namespace = this.getNamespace();
            final Collection<ClassInfo> specifiedClasses = classInfoManager
                    .getClassInfos(namespace);
            accessibleClasses.addAll(specifiedClasses);
        } else {
            final String[] importName = this.getImportName();
            ClassInfo specifiedClass = classInfoManager.getClassInfo(importName);
            if (null == specifiedClass) {
                specifiedClass = new ExternalClassInfo(importName);
            }
        }
        this.resolvedInfo = new ImportStatementInfo(fromLine, fromColumn, toLine, toColumn,
                accessibleClasses);
        return this.resolvedInfo;
    }

    public ImportStatementInfo resolve(final TargetClassInfo usingClass,
            final CallableUnitInfo usingMethod, final ClassInfoManager classInfoManager,
            final FieldInfoManager fieldInfoManager, final MethodInfoManager methodInfoManager) {
        MetricsToolSecurityManager.getInstance().checkAccess();
        if (null == classInfoManager) {
            throw new NullPointerException();
        }
        if (this.alreadyResolved()) {
            return this.getResolved();
        }
        final int fromLine = this.getFromLine();
        final int fromColumn = this.getFromColumn();
        final int toLine = this.getToLine();
        final int toColumn = this.getToColumn();
        final SortedSet<ClassInfo> accessibleClasses = new TreeSet<ClassInfo>();
        if (this.isAllClasses()) {
            final String[] namespace = this.getNamespace();
            final Collection<ClassInfo> specifiedClasses = classInfoManager
                    .getClassInfos(namespace);
            accessibleClasses.addAll(specifiedClasses);
        } else {
            final String[] importName = this.getImportName();
            ClassInfo specifiedClass = classInfoManager.getClassInfo(importName);
            if (null == specifiedClass) {
                specifiedClass = new ExternalClassInfo(importName);
                accessibleClasses.add(specifiedClass);
            }
        }
        this.resolvedInfo = new ImportStatementInfo(fromLine, fromColumn, toLine, toColumn,
                accessibleClasses);
        return this.resolvedInfo;
    }
