// RUN: %scale-test --sum-multi --typecheck --begin 5 --end 16 --step 5 --select NumFunctionsParsed %s
// REQUIRES: OS=macosx
// REQUIRES: asserts

func method${N}() {}

class C${N} {
    func method${N}() {}
}

extension C${N} {
    func otherMethod${N}() {}
}

struct S${N} {
    func method${N}() {}
}

extension S${N} {
    func otherMethod${N}() {}
}

enum E${N} {
    func method${N}() {}
}

extension E${N} {
    func otherMethod${N}() {}
}

protocol P${N} {
    func method${N}()
}

extension P${N} {
    func otherMethod${N}() {}
}