 
 class MDCNodeListViewController: CBCNodeListViewController {
   let appBar = MDCAppBar()
+  var mainSectionHeader : UIView?
+  var additionalExamplesSectionHeader : UIView?
   let sectionNames = ["Description", "Additional Examples"]
-  let descriptionSectionHeight = CGFloat(100)
-  let additionalExamplesSectionHeight = CGFloat(50)
-  let demoRowHeight = CGFloat(60)
-  let rowHeight = CGFloat(50)
+  let estimadedDescriptionSectionHeight = CGFloat(100)
+  let estimadedAdditionalExamplesSectionHeight = CGFloat(50)
+  let estimadedDemoRowHeight = CGFloat(60)
+  let estimadedRowHeight = CGFloat(50)
   let padding = CGFloat(20)
   var componentDescription = ""
   var selectedNode: CBCNode? = nil

                          titleForHeaderInSection section: Int) -> String? {
    return sectionNames[section]
  }

  // swiftlint:disable function_body_length
  override func tableView(_ tableView: UITableView,
                          viewForHeaderInSection section: Int) -> UIView? {
    var sectionViewFrame = CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 50)
    let sectionView = UIView(frame: sectionViewFrame)
    sectionView.backgroundColor = UIColor.white

    if section == 1 {
      let lineDivider =
        UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 1))
      lineDivider.backgroundColor = UIColor(white: 0.85, alpha: 1)
      lineDivider.autoresizingMask = .flexibleWidth
      sectionView.addSubview(lineDivider)
    }

    let label = UILabel()
    label.text = sectionNames[section]
    label.frame =  CGRect(x: 0,
                          y: 0,
                          width: tableView.frame.size.width,
                          height: additionalExamplesSectionHeight)
    label.font = MDCTypography.body2Font()
    label.translatesAutoresizingMaskIntoConstraints = false
    sectionView.addSubview(label)
    constrainView(view: label,
                 containerView: sectionView,
                 height: additionalExamplesSectionHeight,
                 top: 0)

    if section == 0 {
      let textView = UITextView()
      textView.text = componentDescription
      textView.font = MDCTypography.captionFont()
      textView.alpha = MDCTypography.captionFontOpacity()

      if UIApplication.shared.userInterfaceLayoutDirection == .leftToRight {
        textView.contentInset = UIEdgeInsets(top: -8, left: -5, bottom: -8, right: 5)
      } else {
        textView.contentInset = UIEdgeInsets(top: -8, left: 5, bottom: -8, right: -5)
      }

      textView.isEditable = false
      textView.translatesAutoresizingMaskIntoConstraints = false
      sectionViewFrame =
        CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: descriptionSectionHeight)
      sectionView.frame = sectionViewFrame
      sectionView.addSubview(textView)
      let textViewHeight = ceil(MDCTypography.captionFont().lineHeight * 3)
      constrainView(view: textView, containerView: sectionView, height: textViewHeight, top: 40)
    }
    return sectionView
  }
  // swiftlint:enable function_body_length

  override func tableView(_ tableView: UITableView,
                          heightForHeaderInSection section: Int) -> CGFloat {
    if section == Section.description.rawValue {
      return descriptionSectionHeight
    }
    return additionalExamplesSectionHeight
  }

  override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if section == Section.description.rawValue {

  override func viewDidLoad() {
    super.viewDidLoad()

    mainSectionHeader = MainSectionHeader()
    additionalExamplesSectionHeader = AdditionalExamplesSectionHeader()
    self.tableView.backgroundColor = UIColor.white
    self.tableView.separatorStyle = .none
    self.tableView.rowHeight = UITableViewAutomaticDimension
    self.tableView.sectionHeaderHeight = UITableViewAutomaticDimension

    var charactersCount = 0
    #if swift(>=3.2)
