original_string: protected function expandAttributes(array $attributes)
      {
          foreach ($attributes as &$attribute) {
              if (is_callable($attribute) && ! is_string($attribute) && ! is_array($attribute)) {
                  $attribute = $attribute($attributes);
              }
  
              if ($attribute instanceof static) {
                  $attribute = $attribute->create()->getKey();
              }
  
              if ($attribute instanceof Model) {
                  $attribute = $attribute->getKey();
              }
          }
  
          return $attributes;
      }
code: protected function expandAttributes(array $attributes)
      {
          foreach ($attributes as &$attribute) {
              if (is_callable($attribute) && ! is_string($attribute) && ! is_array($attribute)) {
                  $attribute = $attribute($attributes);
              }
  
              if ($attribute instanceof static) {
                  $attribute = $attribute->create()->getKey();
              }
  
              if ($attribute instanceof Model) {
                  $attribute = $attribute->getKey();
              }
          }
  
          return $attributes;
      }
code_tokens: protected function expandAttributes ( array $ attributes ) { foreach ( $ attributes as & $ attribute ) { if ( is_callable ( $ attribute ) && ! is_string ( $ attribute ) && ! is_array ( $ attribute ) ) { $ attribute = $ attribute ( $ attributes ) ; } if ( $ attribute instanceof static ) { $ attribute = $ attribute -> create ( ) -> getKey ( ) ; } if ( $ attribute instanceof Model ) { $ attribute = $ attribute -> getKey ( ) ; } } return $ attributes ; }
docstring: Expand all attributes to their underlying values.
  
  @param  array  $attributes
  @return array
docstring_tokens: Expand all attributes to their underlying values .