public void Update()
        {
            if (objectsPool == null)
            {
                this.objectsPool = new List <Object> ();
            }
            int currentObjectsCount = objectsPool.Count;

            // Remove redundant labels
            int redundantObjectsCount = allDirty? objectsPool.Count: (objectsPool.Count - poolSize);

            while (redundantObjectsCount > 0)
            {
                Object target = objectsPool[objectsPool.Count - 1];
                MonoBehaviour.DestroyImmediate(target);
                objectsPool.Remove(target);
                redundantObjectsCount--;
            }

            // Add missing labels
            Object prefab = objectPrefab != null? objectPrefab : Resources.Load(DefaultObjectPrefabPath);
            int    missingObjectsCount = prefab == null? 0: (poolSize - objectsPool.Count);

            while (missingObjectsCount > 0)
            {
                Object target = viewCreator.InstantiateWithPrefab(prefab, parent);
                objectsPool.Add(target);
                missingObjectsCount--;
            }

            allDirty  = false;
            sizeDirty = false;
        }
        private void InstantiateViews()
        {
            labelText = viewCreator.InstantiateWithPrefab <ChartLabel> (labelPrafab, transform);
            labelText.GetComponent <RectTransform> ().anchorMin = new Vector2(0.5f, 0.5f);
            labelText.GetComponent <RectTransform> ().anchorMax = new Vector2(0.5f, 0.5f);
            labelText.GetComponent <RectTransform> ().sizeDelta = new Vector2(300f, 40f);

            lineRenderer = viewCreator.InstantiateLineRenderer("line", transform, PivotValue.CENTER);
            lineRenderer.GetComponent <RectTransform> ().anchorMin = new Vector2(0.5f, 0.5f);
            lineRenderer.GetComponent <RectTransform> ().anchorMax = new Vector2(0.5f, 0.5f);
            lineRenderer.lineThickness = 2.0f;
        }