hunk.code_window:     color: '#D0D0C0',
     },
   });
   ```
  
hunk.labels: keep keep keep add
hunk.after_edit: ## Tips
   While you're developing, you may want to change your simulator's or device's appearance.
   - If working with an iOS emulator locally, you can use the `command` + `shift` + `a` shortcut to toggle between light and dark mode.
   - If using a real device or an Android emulator, you can toggle the system dark mode setting in the device's settings.
hunk.file_path: docs/pages/versions/v37.0.0/sdk/appearance.md
hunk.type: add
file: /*
   * Copyright 2018 Google LLC
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  /**
   * GULOriginalIMPConvenienceMacros.h
   *
   * This header contains convenience macros for invoking the original IMP of a swizzled method.
   */
  
  /**
   *  Invokes original IMP when the original selector takes no arguments.
   *
   *  @param __receivingObject The object on which the IMP is invoked.
   *  @param __swizzledSEL The selector used for swizzling.
   *  @param __returnType  The return type of the original implementation.
   *  @param __originalIMP The original IMP.
   */
  #define GUL_INVOKE_ORIGINAL_IMP0(__receivingObject, __swizzledSEL, __returnType, __originalIMP) \
    ((__returnType(*)(id, SEL))__originalIMP)(__receivingObject, __swizzledSEL)
  
  /**
   *  Invokes original IMP when the original selector takes 1 argument.
   *
   *  @param __receivingObject The object on which the IMP is invoked.
   *  @param __swizzledSEL The selector used for swizzling.
   *  @param __returnType  The return type of the original implementation.
   *  @param __originalIMP The original IMP.
   *  @param __arg1 The first argument.
   */
  #define GUL_INVOKE_ORIGINAL_IMP1(__receivingObject, __swizzledSEL, __returnType, __originalIMP,   \
                                   __arg1)                                                          \
    ((__returnType(*)(id, SEL, __typeof__(__arg1)))__originalIMP)(__receivingObject, __swizzledSEL, \
                                                                  __arg1)
  
  /**
   *  Invokes original IMP when the original selector takes 2 arguments.
   *
   *  @param __receivingObject The object on which the IMP is invoked.
   *  @param __swizzledSEL The selector used for swizzling.
   *  @param __returnType  The return type of the original implementation.
   *  @param __originalIMP The original IMP.
   *  @param __arg1 The first argument.
   *  @param __arg2 The second argument.
   */
  #define GUL_INVOKE_ORIGINAL_IMP2(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
                                   __arg1, __arg2)                                                \
    ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2)))__originalIMP)(            \
        __receivingObject, __swizzledSEL, __arg1, __arg2)
  
  /**
   *  Invokes original IMP when the original selector takes 3 arguments.
   *
   *  @param __receivingObject The object on which the IMP is invoked.
   *  @param __swizzledSEL The selector used for swizzling.
   *  @param __returnType  The return type of the original implementation.
   *  @param __originalIMP The original IMP.
   *  @param __arg1 The first argument.
   *  @param __arg2 The second argument.
   *  @param __arg3 The third argument.
   */
  #define GUL_INVOKE_ORIGINAL_IMP3(__receivingObject, __swizzledSEL, __returnType, __originalIMP,  \
                                   __arg1, __arg2, __arg3)                                         \
    ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2),                             \
                      __typeof__(__arg3)))__originalIMP)(__receivingObject, __swizzledSEL, __arg1, \
                                                         __arg2, __arg3)
  
  /**
   *  Invokes original IMP when the original selector takes 4 arguments.
   *
   *  @param __receivingObject The object on which the IMP is invoked.
   *  @param __swizzledSEL The selector used for swizzling.
   *  @param __returnType  The return type of the original implementation.
   *  @param __originalIMP The original IMP.
   *  @param __arg1 The first argument.
   *  @param __arg2 The second argument.
   *  @param __arg3 The third argument.
   *  @param __arg4 The fourth argument.
   */
  #define GUL_INVOKE_ORIGINAL_IMP4(__receivingObject, __swizzledSEL, __returnType, __originalIMP,  \
                                   __arg1, __arg2, __arg3, __arg4)                                 \
    ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3),         \
                      __typeof__(__arg4)))__originalIMP)(__receivingObject, __swizzledSEL, __arg1, \
                                                         __arg2, __arg3, __arg4)
  
  /**
   *  Invokes original IMP when the original selector takes 5 arguments.
   *
   *  @param __receivingObject The object on which the IMP is invoked.
   *  @param __swizzledSEL The selector used for swizzling.
   *  @param __returnType  The return type of the original implementation.
   *  @param __originalIMP The original IMP.
   *  @param __arg1 The first argument.
   *  @param __arg2 The second argument.
   *  @param __arg3 The third argument.
   *  @param __arg4 The fourth argument.
   *  @param __arg5 The fifth argument.
   */
  #define GUL_INVOKE_ORIGINAL_IMP5(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
                                   __arg1, __arg2, __arg3, __arg4, __arg5)                        \
    ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3),        \
                      __typeof__(__arg4), __typeof__(__arg5)))__originalIMP)(                     \
        __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5)
  
  /**
   *  Invokes original IMP when the original selector takes 6 arguments.
   *
   *  @param __receivingObject The object on which the IMP is invoked.
   *  @param __swizzledSEL The selector used for swizzling.
   *  @param __returnType  The return type of the original implementation.
   *  @param __originalIMP The original IMP.
   *  @param __arg1 The first argument.
   *  @param __arg2 The second argument.
   *  @param __arg3 The third argument.
   *  @param __arg4 The fourth argument.
   *  @param __arg5 The fifth argument.
   *  @param __arg6 The sixth argument.
   */
  #define GUL_INVOKE_ORIGINAL_IMP6(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
                                   __arg1, __arg2, __arg3, __arg4, __arg5, __arg6)                \
    ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3),        \
                      __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6)))__originalIMP)( \
        __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6)
  
  /**
   *  Invokes original IMP when the original selector takes 7 arguments.
   *
   *  @param __receivingObject The object on which the IMP is invoked.
   *  @param __swizzledSEL The selector used for swizzling.
   *  @param __returnType  The return type of the original implementation.
   *  @param __originalIMP The original IMP.
   *  @param __arg1 The first argument.
   *  @param __arg2 The second argument.
   *  @param __arg3 The third argument.
   *  @param __arg4 The fourth argument.
   *  @param __arg5 The fifth argument.
   *  @param __arg6 The sixth argument.
   *  @param __arg7 The seventh argument.
   */
  #define GUL_INVOKE_ORIGINAL_IMP7(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
                                   __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7)        \
    ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3),        \
                      __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6),                 \
                      __typeof__(__arg7)))__originalIMP)(                                         \
        __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7)
  
  /**
   *  Invokes original IMP when the original selector takes 8 arguments.
   *
   *  @param __receivingObject The object on which the IMP is invoked.
   *  @param __swizzledSEL The selector used for swizzling.
   *  @param __returnType  The return type of the original implementation.
   *  @param __originalIMP The original IMP.
   *  @param __arg1 The first argument.
   *  @param __arg2 The second argument.
   *  @param __arg3 The third argument.
   *  @param __arg4 The fourth argument.
   *  @param __arg5 The fifth argument.
   *  @param __arg6 The sixth argument.
   *  @param __arg7 The seventh argument.
   *  @param __arg8 The eighth argument.
   */
  #define GUL_INVOKE_ORIGINAL_IMP8(__receivingObject, __swizzledSEL, __returnType, __originalIMP,  \
                                   __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, __arg8) \
    ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3),         \
                      __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6),                  \
                      __typeof__(__arg7), __typeof__(__arg8)))__originalIMP)(                      \
        __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7,  \
        __arg8)
  
  /**
   *  Invokes original IMP when the original selector takes 9 arguments.
   *
   *  @param __receivingObject The object on which the IMP is invoked.
   *  @param __swizzledSEL The selector used for swizzling.
   *  @param __returnType  The return type of the original implementation.
   *  @param __originalIMP The original IMP.
   *  @param __arg1 The first argument.
   *  @param __arg2 The second argument.
   *  @param __arg3 The third argument.
   *  @param __arg4 The fourth argument.
   *  @param __arg5 The fifth argument.
   *  @param __arg6 The sixth argument.
   *  @param __arg7 The seventh argument.
   *  @param __arg8 The eighth argument.
   *  @param __arg9 The ninth argument.
   */
  #define GUL_INVOKE_ORIGINAL_IMP9(__receivingObject, __swizzledSEL, __returnType, __originalIMP,  \
                                   __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, __arg8, \
                                   __arg9)                                                         \
    ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3),         \
                      __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6),                  \
                      __typeof__(__arg7), __typeof__(__arg8), __typeof__(__arg9)))__originalIMP)(  \
        __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7,  \
        __arg8, __arg9)
  