text: void call();
  
  struct S {
    static void foo() { call(); call(); }
    static void bar() { call(); call(); }
    static void baz() {}
  };
  
  #ifdef FILE1
  # define FUNC_NAME func1
  # define FUNC_BODY \
      S::foo(); S::bar(); S::baz();
  #else
  # define FUNC_NAME func2
  # define FUNC_BODY \
      S::bar();
  #endif
  
  void FUNC_NAME() {
    FUNC_BODY
  }
  
  // Build instructions:
  // $ clang -g -fPIC -c -DFILE1 arange-overlap.cc -o obj1.o
  // $ clang -g -fPIC -c arange-overlap.cc -o obj2.o
  // $ clang -shared obj1.o obj2.o -o <output>
  