docs: public static PercentLayoutInfo getPercentLayoutInfo(Context context,
                                                           AttributeSet attrs) {
          PercentLayoutInfo info = null;
          TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.Carbon);
          float value = array.getFraction(R.styleable.Carbon_carbon_widthPercent, 1, 1,
                  -1f);
          if (value != -1f) {
              if (Log.isLoggable(TAG, Log.VERBOSE)) {
                  Log.v(TAG, "percent width: " + value);
              }
              info = info != null ? info : new PercentLayoutInfo();
              info.widthPercent = value;
          }
          value = array.getFraction(R.styleable.Carbon_carbon_heightPercent, 1, 1, -1f);
          if (value != -1f) {
              if (Log.isLoggable(TAG, Log.VERBOSE)) {
                  Log.v(TAG, "percent height: " + value);
              }
              info = info != null ? info : new PercentLayoutInfo();
              info.heightPercent = value;
          }
          value = array.getFraction(R.styleable.Carbon_carbon_marginPercent, 1, 1, -1f);
          if (value != -1f) {
              if (Log.isLoggable(TAG, Log.VERBOSE)) {
                  Log.v(TAG, "percent margin: " + value);
              }
              info = info != null ? info : new PercentLayoutInfo();
              info.leftMarginPercent = value;
              info.topMarginPercent = value;
              info.rightMarginPercent = value;
              info.bottomMarginPercent = value;
          }
          value = array.getFraction(R.styleable.Carbon_carbon_marginLeftPercent, 1, 1,
                  -1f);
          if (value != -1f) {
              if (Log.isLoggable(TAG, Log.VERBOSE)) {
                  Log.v(TAG, "percent left margin: " + value);
              }
              info = info != null ? info : new PercentLayoutInfo();
              info.leftMarginPercent = value;
          }
          value = array.getFraction(R.styleable.Carbon_carbon_marginTopPercent, 1, 1,
                  -1f);
          if (value != -1f) {
              if (Log.isLoggable(TAG, Log.VERBOSE)) {
                  Log.v(TAG, "percent top margin: " + value);
              }
              info = info != null ? info : new PercentLayoutInfo();
              info.topMarginPercent = value;
          }
          value = array.getFraction(R.styleable.Carbon_carbon_marginRightPercent, 1, 1,
                  -1f);
          if (value != -1f) {
              if (Log.isLoggable(TAG, Log.VERBOSE)) {
                  Log.v(TAG, "percent right margin: " + value);
              }
              info = info != null ? info : new PercentLayoutInfo();
              info.rightMarginPercent = value;
          }
          value = array.getFraction(R.styleable.Carbon_carbon_marginBottomPercent, 1, 1,
                  -1f);
          if (value != -1f) {
              if (Log.isLoggable(TAG, Log.VERBOSE)) {
                  Log.v(TAG, "percent bottom margin: " + value);
              }
              info = info != null ? info : new PercentLayoutInfo();
              info.bottomMarginPercent = value;
          }
          value = array.getFraction(R.styleable.Carbon_carbon_marginStartPercent, 1, 1,
                  -1f);
          if (value != -1f) {
              if (Log.isLoggable(TAG, Log.VERBOSE)) {
                  Log.v(TAG, "percent start margin: " + value);
              }
              info = info != null ? info : new PercentLayoutInfo();
              info.startMarginPercent = value;
          }
          value = array.getFraction(R.styleable.Carbon_carbon_marginEndPercent, 1, 1,
                  -1f);
          if (value != -1f) {
              if (Log.isLoggable(TAG, Log.VERBOSE)) {
                  Log.v(TAG, "percent end margin: " + value);
              }
              info = info != null ? info : new PercentLayoutInfo();
              info.endMarginPercent = value;
          }
  
          value = array.getFraction(R.styleable.Carbon_carbon_aspectRatio, 1, 1, -1f);
          if (value != -1f) {
              if (Log.isLoggable(TAG, Log.VERBOSE)) {
                  Log.v(TAG, "aspect ratio: " + value);
              }
              info = info != null ? info : new PercentLayoutInfo();
              info.aspectRatio = value;
          }
  
          array.recycle();
          if (Log.isLoggable(TAG, Log.DEBUG)) {
              Log.d(TAG, "constructed: " + info);
          }
          return info;
      }